﻿using System;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.Collections.Generic;

namespace WedstrijdApplication.Web
{
    [ServiceContract(Namespace = "")]
    [SilverlightFaultBehavior]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class Wedstrijdservice
    {
        [OperationContract]
        public void DoWork()
        {
            // Add your operation implementation here
            return;
        }

        [OperationContract]
        public List<Wedstrijd> GetWedstrijden()
        {
            DCWedstrijdDataContext db = new DCWedstrijdDataContext();
            var result = from w in db.Wedstrijds select w;
            List<Wedstrijd> mijnwedstrijden = result.ToList();

            return mijnwedstrijden;
        }

        [OperationContract]
        public void DeleteWedstrijden(Wedstrijd mijnwedstrijd)
        {
            DCWedstrijdDataContext db = new DCWedstrijdDataContext();
            var result = from w in db.Wedstrijds where w.WedstrijdID == mijnwedstrijd.WedstrijdID select w;
            db.Wedstrijds.DeleteAllOnSubmit(result);
            db.SubmitChanges();
        }

        //   var currentContacts = this.Store.Where(item => item.Roll.ToString().Equals(roll));

        //if (currentContacts.Count() <= 0)
        //    return false;

        //foreach (Contact currentContact in currentContacts)
        //    this.Store.Remove(currentContact);

        [OperationContract]
        public void InsertWedstrijden(Wedstrijd mijnwedstrijd)
        {
            DCWedstrijdDataContext db = new DCWedstrijdDataContext();
            db.Wedstrijds.InsertOnSubmit(mijnwedstrijd);
            db.SubmitChanges();
        }

        [OperationContract]
        public void UpdateWedstrijden(Wedstrijd updatewedstrijd)
        {
            DCWedstrijdDataContext db = new DCWedstrijdDataContext();
            var result = from w in db.Wedstrijds where w.WedstrijdID == updatewedstrijd.WedstrijdID select w;
            db.Wedstrijds.DeleteAllOnSubmit(result);
            db.Wedstrijds.InsertOnSubmit(updatewedstrijd);
            db.SubmitChanges();
        }

        [OperationContract]
        public void KiesWinnaar(Wedstrijd mijnwedstrijd)
        {
            DCWedstrijdDataContext db = new DCWedstrijdDataContext();
            var result = from l in db.DeelnemerWedstrijds where l.WedstrijdID == mijnwedstrijd.WedstrijdID select l;
            var result2 = from w in db.Wedstrijds where w.WedstrijdID == mijnwedstrijd.WedstrijdID select w;

            List<int> mijnlijst = new List<int>();

            foreach (var r in result)
            {
                mijnlijst.Add(r.DeelnemerID);
            }

            Random rnd = new Random();
            int ran = rnd.Next(mijnlijst.Count());

            db.Wedstrijds.DeleteAllOnSubmit(result2);

            mijnwedstrijd.WinnaarID = mijnlijst[ran];

            db.Wedstrijds.InsertOnSubmit(mijnwedstrijd);

            db.SubmitChanges();
        }

        [OperationContract]
        public List<int> KiesWinnaars(Wedstrijd mijnwedstrijd,int Aantal)
        {
            DCWedstrijdDataContext db = new DCWedstrijdDataContext();
            var result = from l in db.DeelnemerWedstrijds where l.WedstrijdID == mijnwedstrijd.WedstrijdID select l;

            List<int> mijnlijst = new List<int>();
            List<int> winnaars = new List<int>();

            foreach (var r in result)
            {
                mijnlijst.Add(r.DeelnemerID);
            }


            do
            {
                Random rnd = new Random();
                int ran = rnd.Next(mijnlijst.Count());

                if (winnaars.Contains(ran) || ran == 0)
                {

                }
                else
                {
                    winnaars.Add(ran);
                    Aantal--;
                }
            }
            while (Aantal > 0);
            
            return winnaars;

        }

        //(string)list[r]); 

        //[OperationContract]
        //public List<Student> GetStudenten()
        //{
        //    dcSchoolDataContext db = new dcSchoolDataContext();
        //    var result = from s in db.Students select s;
        //    List<Student> mijnstudenten = result.ToList();

        //    return mijnstudenten;

        //}

        // Add more operations here and mark them with [OperationContract]
    }
}
